package com.hyper_yang.javase.fileAndIO;

import org.junit.jupiter.api.Test;

import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.io.PrintWriter;

/*
打印流: 将数据快速的写出，而不关注数据的类型
    PrintStream: 字节打印流
    PrintWriter: 字符打印流
 */
public class PrintTest {
    
    @Test
    public void testPrintStream() throws FileNotFoundException {
        PrintStream ps = new PrintStream("src/main/java/com/hyper_yang/fileAndIO/testFile/ps.txt");

        ps.print(true);
        ps.print(3.14);
        ps.print(666);
        ps.print('A');
        ps.print("嘿嘿嘿");
        ps.print("new PrintStream()传入的是输出流，才能设定是否为追加，否则默认为覆盖");

        ps.close();
    }
    
    @Test
    public void testPrintWriter() throws FileNotFoundException {
        // 字符打印流，需要 pw.flush()
        PrintWriter pw = new PrintWriter("src/main/java/com/hyper_yang/fileAndIO/testFile/pw.txt");

        pw.print(true);
        pw.print(3.14);
        pw.print(666);
        pw.print('A');
        pw.print("嘿嘿嘿");

//        pw.flush();
        pw.close();
    }
    
    @Test
    public void testStandard() throws FileNotFoundException {

        // 标准输出流 都是打印在控制台
        System.out.println(666);
        // 标准错误输出流  打印位置是不固定的
        System.err.println(888);

        // 不选择打印到控制台
        PrintStream ps = new PrintStream("src/main/java/com/hyper_yang/fileAndIO/testFile/sys.txt");

        // 更改流的流向
        System.setOut(ps);
//        System.setErr(ps);

        System.out.println("真的改变了输出位置吗？还是否在控制台输出");
    }
    
}
